package Negocio;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Table;


@Entity
@Table(name="clientes")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(
	    name="tipo",
	    discriminatorType=DiscriminatorType.STRING
	)
public abstract class Cliente implements Serializable {
	@Id
	@Column(name="cliente_id")
	protected String clienteId;
	@Embedded
	protected Direccion direccion;
	
	/*@OneToMany(mappedBy="cliente", cascade = CascadeType.ALL)
	List<Envio> envios;*/
 
	public Cliente() {
		super();
	}
	
	public abstract ClienteDTO getClienteDTO();

	public abstract boolean aceptaCC();

	public String getClienteId() {
		return clienteId;
	}
	public void setClienteId(String id) {
		this.clienteId = id;
	}
	public Direccion getDireccion() {
		return direccion;
	}
	public void setDireccion(Direccion direccion) {
		this.direccion = direccion;
	}
	public String getCalle() {
		return this.direccion.getCalle();
	}
	public void setCalle(String calle) {
		this.direccion.setCalle(calle);
	}
	public String getNumero() {
		return this.direccion.getNumero();
	}
	public void setNumero(String numero) {
		this.direccion.setNumero(numero);
	}
	public String getPiso() {
		return this.direccion.getPiso();
	}
	public void setPiso(String piso) {
		this.direccion.setPiso(piso);
	}
	public String getDepartamento() {
		return this.direccion.getDepartamento();
	}
	public void setDepartamento(String departamento) {
		this.direccion.setDepartamento(departamento);
	}
	public String getEntreCalle1() {
		return this.direccion.getEntreCalle1();
	}
	public void setEntreCalle1(String entreCalle1) {
		this.direccion.setEntreCalle1(entreCalle1);
	}
	public String getEntreCalle2() {
		return this.direccion.getEntreCalle2();
	}
	public void setEntreCalle2(String entreCalle2) {
		this.direccion.setEntreCalle1(entreCalle2);
	}
	public String getLocalidad() {
		return this.direccion.getLocalidad();
	}
	public void setLocalidad(String localidad) {
		this.direccion.setLocalidad(localidad);
	}
	public String getProvincia() {
		return this.direccion.getProvincia();
	}
	public void setProvincia(String provincia) {
		this.direccion.setProvincia(provincia);
	}
	public String getPais() {
		return this.direccion.getPais();
	}
	public void setPais(String pais) {
		this.direccion.setPais(pais);
	}
	public String getCodigoPostal() {
		return this.direccion.getCodigoPostal();
	}
	public void setCodigoPostal(String codigoPostal) {
		this.direccion.setCodigoPostal(codigoPostal);
	}
	public String getLatitud() {
		return this.direccion.getLatitud();
	}
	public void setLatitud(String latitud) {
		this.direccion.setLatitud(latitud);
	}
	public String getLongitud() {
		return this.direccion.getLongitud();
	}
	public void setLongitud(String longitud) {
		this.direccion.setLongitud(longitud);
	}
 }

